#Configurator
#Este Modulo se encarga de leer y escribir las lineas del archivo
#De Configuracion

class Configurator:
	def __init__(self,ConfigFile):
		self.ArchivoConfiguracion = ConfigFile
	
	def CrearArchivoDefault(self):
		self.__NuevoArchivoConfig()
		
	def GetIpAddress(self):
		return self.__BuscarParmetro("IPAddress")
		
	def SetIpAdrees(self,IP):
		self.__ModificarParmetro("IPAddress",IP)
		
	def GetNetMask(self):
		return self.__BuscarParmetro("NetMask")
	
	def SetNetMask(self,NetMask):
		self.__ModificarParmetro("NetMask",NetMask)
	
	def GetGateway(self):
		return self.__BuscarParmetro("Gateway")
	
	def SetGateway(self,Gateway):
		self.__ModificarParmetro("Gateway",Gateway)
			
	def GetNombreDispositivo(self):
		return self.__BuscarParmetro("Nombre")
	
	def SetNombreDispositivo(self,Nombre):
		self.__ModificarParmetro("Nombre",Nombre)
		
	def GetCodigoCliente(self):
		return self.__BuscarParmetro("ClientCode")
	
	def SetCodigoCliente(self,Code):
		self.__ModificarParmetro("ClientCode",Code)
		
	def GetServerAddress(self):
		return self.__BuscarParmetro("Server")
	
	def SetServerAddres(self,Server):
		self.__ModificarParmetro("Server",Server)
	
#----------Metodos Privados De Manejo De Strings----------------------
	def __BuscarParmetro(self,Parametro):
		Archivo = open(self.ArchivoConfiguracion,"r")
		for Linea in Archivo:	
			Param,Valor = Linea.split("=")
			if(Param.strip() == Parametro):
				return Valor.strip()
				Archivo.close()
				
	def __NuevoArchivoConfig(self):
		Archivo = open(self.ArchivoConfiguracion,"w")
		IP = "IPAddress=192.168.1.10\n"
		NetMask = "NetMask=255.255.255.0\n"
		Gate = "Gateway=192.168.1.1\n"
		Nombre = "Nombre=InXource01\n"
		Cliente = "ClientCode=0000000\n"
		Server = "Server=inxource.no-ip.org"
		Lista = [IP,NetMask,Gate,Nombre,Cliente,Server]
		Archivo.writelines(Lista)
		Archivo.close()
						
	def __ModificarParmetro(self,Parametro,NuevoValor):
		Archivo = open(self.ArchivoConfiguracion,"r")
		NuevoArchivo = []
		for Linea in Archivo:
			Param, Valor = Linea.split("=")
			if(Param.strip() == Parametro):
				Linea = Param.strip()+"="+NuevoValor+"\n"
				NuevoArchivo.append(Linea)
			else:
				Linea = Param.strip()+"="+Valor	
				NuevoArchivo.append(Linea)
		Archivo.close()
		
		Archivo = open(self.ArchivoConfiguracion,"w")	
		Archivo.writelines(NuevoArchivo)		
		Archivo.close()		

#Ejemplo de Implementacion

#conf = Configurator("Config.cf") Por parametro le paso el archivo de configuracion 				 
#IP = conf.GetIPAddress() Devuelve la direccion IP Almacenada en el archivo de configuracion
#conf.SetIpAddress("192.168.1.1")

	
